/*
 * Copyright (C) 2012 www.amsoft.cn
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.dehui.traders.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

// TODO: Auto-generated Javadoc

/**
 * 描述：日期处理类.
 * 
 */
public class DateUtil {

	/** 时间日期格式化到年月日时分秒. */
	public static final String dateFormatYMDHMS = "yyyy-MM-dd HH:mm:ss";

	/** 时间日期格式化到年月日. */
	public static final String dateFormatYMD = "yyyy-MM-dd";

	public static final String dataFormatYMD2 = "yyyy.MM.dd";

	public static final String dataFormatYMD3 = "yyyy年MM月dd日";

	/** 时间日期格式化到月日时分. */
	public static final String dataFormatMDhm = "MM-dd HH:mm";
	/** 时间日期格式化到年月. */
	public static final String dateFormatYM = "yyyy-MM";

	/** 时间日期格式化到年月日时分. */
	public static final String dateFormatYMDHM = "yyyy-MM-dd HH:mm";

	/** 时间日期格式化到月日. */
	public static final String dateFormatMD = "MM/dd";
	/** 时间日期格式化到月日. */
	public static final String dateFormatMD2 = "MM月dd日";

	/** 时分秒. */
	public static final String dateFormatHMS = "HH:mm:ss";

	/** 时分. */
	public static final String dateFormatHM = "HH:mm";

	/** 上午. */
	public static final String AM = "AM";

	/** 下午. */
	public static final String PM = "PM";

	/**
	 * 描述：String类型的日期时间转化为Date类型.
	 * 
	 * @param strDate
	 *            String形式的日期时间
	 * @param format
	 *            格式化字符串，如："yyyy-MM-dd HH:mm:ss"
	 * @return Date Date类型日期时间
	 */
	public static Date getDateByFormat(String strDate, String format) {
		SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
		Date date = null;
		try {
			date = mSimpleDateFormat.parse(strDate);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 描述：获取偏移之后的Date.
	 * 
	 * @param date
	 *            日期时间
	 * @param calendarField
	 *            Calendar属性，对应offset的值，
	 *            如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示＋offset小时)
	 * @param offset
	 *            偏移(值大于0,表示+,值小于0,表示－)
	 * @return Date 偏移之后的日期时间
	 */
	public static Date getDateByOffset(Date date, int calendarField, int offset) {
		Calendar c = new GregorianCalendar();
		try {
			c.setTime(date);
			c.add(calendarField, offset);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return c.getTime();
	}

	/**
	 * 描述：获取指定日期时间的字符串(可偏移).
	 * 
	 * @param strDate
	 *            String形式的日期时间
	 * @param format
	 *            格式化字符串，如："yyyy-MM-dd HH:mm:ss"
	 * @param calendarField
	 *            Calendar属性，对应offset的值，
	 *            如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示＋offset小时)
	 * @param offset
	 *            偏移(值大于0,表示+,值小于0,表示－)
	 * @return String String类型的日期时间
	 */
	public static String getStringByOffset(String strDate, String format,
										   int calendarField, int offset) {
		String mDateTime = null;
		try {
			Calendar c = new GregorianCalendar();
			SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
			c.setTime(mSimpleDateFormat.parse(strDate));
			c.add(calendarField, offset);
			mDateTime = mSimpleDateFormat.format(c.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return mDateTime;
	}

	/**
	 * 描述：Date类型转化为String类型(可偏移).
	 * 
	 * @param date
	 *            the date
	 * @param format
	 *            the format
	 * @param calendarField
	 *            the calendar field
	 * @param offset
	 *            the offset
	 * @return String String类型日期时间
	 */
	public static String getStringByOffset(Date date, String format,
										   int calendarField, int offset) {
		String strDate = null;
		try {
			Calendar c = new GregorianCalendar();
			SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
			c.setTime(date);
			c.add(calendarField, offset);
			strDate = mSimpleDateFormat.format(c.getTime());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strDate;
	}

	/**
	 * 描述：Date类型转化为String类型.
	 * 
	 * @param date
	 *            the date
	 * @param format
	 *            the format
	 * @return String String类型日期时间
	 */
	public static String getStringByFormat(Date date, String format) {
		SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
		String strDate = null;
		try {
			strDate = mSimpleDateFormat.format(date);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strDate;
	}

	/**
	 * 描述：获取指定日期时间的字符串,用于导出想要的格式.
	 * 
	 * @param strDate
	 *            String形式的日期时间，必须为yyyy-MM-dd HH:mm:ss格式
	 * @param format
	 *            输出格式化字符串，如："yyyy-MM-dd HH:mm:ss"
	 * @return String 转换后的String类型的日期时间
	 */
	public static String getStringByFormat(String strDate, String format) {
		String mDateTime = null;
		try {
			Calendar c = new GregorianCalendar();
			SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(
					dateFormatYMDHMS);
			c.setTime(mSimpleDateFormat.parse(strDate));
			SimpleDateFormat mSimpleDateFormat2 = new SimpleDateFormat(format);
			mDateTime = mSimpleDateFormat2.format(c.getTime());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mDateTime;
	}

	/**
	 * 描述：获取milliseconds表示的日期时间的字符串.
	 * 
	 * @param milliseconds
	 *            the milliseconds
	 * @param format
	 *            格式化字符串，如："yyyy-MM-dd HH:mm:ss"
	 * @return String 日期时间字符串
	 */
	public static String getStringByFormat(long milliseconds, String format) {
		String thisDateTime = null;
		try {
			SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
			thisDateTime = mSimpleDateFormat.format(milliseconds);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return thisDateTime;
	}

	/**
	 * 将字符串转为时间戳
	 * @param dateString
	 * @param pattern
     * @return
     */
	public static long getStringToDate(String dateString, String pattern) {
		SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
		Date date = new Date();
		try{
			date = dateFormat.parse(dateString);
		} catch(ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return date.getTime();
	}

	/**
	 * 描述：获取表示当前日期时间的字符串.
	 * 
	 * @param format
	 *            格式化字符串，如："yyyy-MM-dd HH:mm:ss"
	 * @return String String类型的当前日期时间
	 */
	public static String getCurrentDate(String format) {
		String curDateTime = null;
		try {
			SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
			Calendar c = new GregorianCalendar();
			curDateTime = mSimpleDateFormat.format(c.getTime());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return curDateTime;

	}

	/**
	 * 描述：获取表示当前日期时间的字符串(可偏移).
	 * 
	 * @param format
	 *            格式化字符串，如："yyyy-MM-dd HH:mm:ss"
	 * @param calendarField
	 *            Calendar属性，对应offset的值，
	 *            如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示＋offset小时)
	 * @param offset
	 *            偏移(值大于0,表示+,值小于0,表示－)
	 * @return String String类型的日期时间
	 */
	public static String getCurrentDateByOffset(String format,
												int calendarField, int offset) {
		String mDateTime = null;
		try {
			SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
			Calendar c = new GregorianCalendar();
			c.add(calendarField, offset);
			mDateTime = mSimpleDateFormat.format(c.getTime());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mDateTime;

	}

	/**
	 * 描述：计算两个日期所差的天数.
	 * 
	 * @param milliseconds1
	 *            the milliseconds1
	 * @param milliseconds2
	 *            the milliseconds2
	 * @return int 所差的天数
	 */
	public static int getOffectDay(long milliseconds1, long milliseconds2) {
		Calendar calendar1 = Calendar.getInstance();
		calendar1.setTimeInMillis(milliseconds1);
		Calendar calendar2 = Calendar.getInstance();
		calendar2.setTimeInMillis(milliseconds2);
		// 先判断是否同年
		int y1 = calendar1.get(Calendar.YEAR);
		int y2 = calendar2.get(Calendar.YEAR);
		int d1 = calendar1.get(Calendar.DAY_OF_YEAR);
		int d2 = calendar2.get(Calendar.DAY_OF_YEAR);
		int maxDays = 0;
		int day = 0;
		if (y1 - y2 > 0) {
			maxDays = calendar2.getActualMaximum(Calendar.DAY_OF_YEAR);
			day = d1 - d2 + maxDays;
		} else if (y1 - y2 < 0) {
			maxDays = calendar1.getActualMaximum(Calendar.DAY_OF_YEAR);
			day = d1 - d2 - maxDays;
		} else {
			day = d1 - d2;
		}
		return day;
	}

	/**
	 * 描述：计算两个日期所差的小时数.
	 * 
	 * @param date1
	 *            第一个时间的毫秒表示
	 * @param date2
	 *            第二个时间的毫秒表示
	 * @return int 所差的小时数
	 */
	public static int getOffectHour(long date1, long date2) {
		Calendar calendar1 = Calendar.getInstance();
		calendar1.setTimeInMillis(date1);
		Calendar calendar2 = Calendar.getInstance();
		calendar2.setTimeInMillis(date2);
		int h1 = calendar1.get(Calendar.HOUR_OF_DAY);
		int h2 = calendar2.get(Calendar.HOUR_OF_DAY);
		int h = 0;
		int day = getOffectDay(date1, date2);
		h = h1 - h2 + day * 24;
		return h;
	}

	/**
	 * 描述：计算两个日期所差的分钟数.
	 * 
	 * @param date1
	 *            第一个时间的毫秒表示
	 * @param date2
	 *            第二个时间的毫秒表示
	 * @return int 所差的分钟数
	 */
	public static int getOffectMinutes(long date1, long date2) {
		Calendar calendar1 = Calendar.getInstance();
		calendar1.setTimeInMillis(date1);
		Calendar calendar2 = Calendar.getInstance();
		calendar2.setTimeInMillis(date2);
		int m1 = calendar1.get(Calendar.MINUTE);
		int m2 = calendar2.get(Calendar.MINUTE);
		int h = getOffectHour(date1, date2);
		int m = 0;
		m = m1 - m2 + h * 60;
		return m;
	}

	/**
	 * 描述：获取本周一.
	 * 
	 * @param format
	 *            the format
	 * @return String String类型日期时间
	 */
	public static String getFirstDayOfWeek(String format) {
		return getDayOfWeek(format, Calendar.MONDAY);
	}

	/**
	 * 描述：获取本周日.
	 * 
	 * @param format
	 *            the format
	 * @return String String类型日期时间
	 */
	public static String getLastDayOfWeek(String format) {
		return getDayOfWeek(format, Calendar.SUNDAY);
	}

	/**
	 * 描述：获取本周的某一天.
	 * 
	 * @param format
	 *            the format
	 * @param calendarField
	 *            the calendar field
	 * @return String String类型日期时间
	 */
	private static String getDayOfWeek(String format, int calendarField) {
		String strDate = null;
		try {
			Calendar c = new GregorianCalendar();
			SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
			int week = c.get(Calendar.DAY_OF_WEEK);
			if (week == calendarField) {
				strDate = mSimpleDateFormat.format(c.getTime());
			} else {
				int offectDay = calendarField - week;
				if (calendarField == Calendar.SUNDAY) {
					offectDay = 7 - Math.abs(offectDay);
				}
				c.add(Calendar.DATE, offectDay);
				strDate = mSimpleDateFormat.format(c.getTime());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strDate;
	}

	/**
	 * 描述：获取本月第一天.
	 * 
	 * @param format
	 *            the format
	 * @return String String类型日期时间
	 */
	public static String getFirstDayOfMonth(String format) {
		String strDate = null;
		try {
			Calendar c = new GregorianCalendar();
			SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
			// 当前月的第一天
			c.set(GregorianCalendar.DAY_OF_MONTH, 1);
			strDate = mSimpleDateFormat.format(c.getTime());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strDate;

	}

	/**
	 * 描述：获取本月最后一天.
	 * 
	 * @param format
	 *            the format
	 * @return String String类型日期时间
	 */
	public static String getLastDayOfMonth(String format) {
		String strDate = null;
		try {
			Calendar c = new GregorianCalendar();
			SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
			// 当前月的最后一天
			c.set(Calendar.DATE, 1);
			c.roll(Calendar.DATE, -1);
			strDate = mSimpleDateFormat.format(c.getTime());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return strDate;
	}

	/**
	 * 描述：获取表示当前日期的0点时间毫秒数.
	 * 
	 * @return the first time of day
	 */
	public static long getFirstTimeOfDay() {
		Date date = null;
		try {
			String currentDate = getCurrentDate(dateFormatYMD);
			date = getDateByFormat(currentDate + " 00:00:00", dateFormatYMDHMS);
			return date.getTime();
		} catch (Exception e) {
		}
		return -1;
	}

	/**
	 * 描述：获取表示当前日期24点时间毫秒数.
	 * 
	 * @return the last time of day
	 */
	public static long getLastTimeOfDay() {
		Date date = null;
		try {
			String currentDate = getCurrentDate(dateFormatYMD);
			date = getDateByFormat(currentDate + " 24:00:00", dateFormatYMDHMS);
			return date.getTime();
		} catch (Exception e) {
		}
		return -1;
	}

	/**
	 * 描述：判断是否是闰年()
	 * <p>
	 * (year能被4整除 并且 不能被100整除) 或者 year能被400整除,则该年为闰年.
	 * 
	 * @param year
	 *            年代（如2012）
	 * @return boolean 是否为闰年
	 */
	public static boolean isLeapYear(int year) {
		if ((year % 4 == 0 && year % 400 != 0) || year % 400 == 0) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 描述：根据时间返回格式化后的时间的描述. 小于1小时显示多少分钟前 大于1小时显示今天＋实际日期，大于今天全部显示实际时间
	 * 
	 * @param strDate
	 *            the str date
	 * @param outFormat
	 *            the out format
	 * @return the string
	 */
	public static String formatDateStr2Desc(String strDate, String outFormat) {

		DateFormat df = new SimpleDateFormat(dateFormatYMDHMS);
		Calendar c1 = Calendar.getInstance();
		Calendar c2 = Calendar.getInstance();
		try {
			c2.setTime(df.parse(strDate));
			c1.setTime(new Date());
			int d = getOffectDay(c1.getTimeInMillis(), c2.getTimeInMillis());
			if (d == 0) {
				int h = getOffectHour(c1.getTimeInMillis(),
						c2.getTimeInMillis());
				if (h > 0) {
					return "今天" + getStringByFormat(strDate, dateFormatHM);
					// return h + "小时前";
				} else if (h < 0) {
					// return Math.abs(h) + "小时后";
				} else if (h == 0) {
					int m = getOffectMinutes(c1.getTimeInMillis(),
							c2.getTimeInMillis());
					if (m > 0) {
						return m + "分钟前";
					} else if (m < 0) {
						// return Math.abs(m) + "分钟后";
					} else {
						return "刚刚";
					}
				}

			} else if (d > 0) {
				if (d == 1) {
					// return "昨天"+getStringByFormat(strDate,outFormat);
				} else if (d == 2) {
					// return "前天"+getStringByFormat(strDate,outFormat);
				}
			} else if (d < 0) {
				if (d == -1) {
					// return "明天"+getStringByFormat(strDate,outFormat);
				} else if (d == -2) {
					// return "后天"+getStringByFormat(strDate,outFormat);
				} else {
					// return Math.abs(d) +
					// "天后"+getStringByFormat(strDate,outFormat);
				}
			}

			String out = getStringByFormat(strDate, outFormat);
			if (out != null && !out.equals("")) {
				return out;
			}
		} catch (Exception e) {
		}

		return strDate;
	}

	/**
	 * 取指定日期为星期几.
	 * 
	 * @param strDate
	 *            指定日期
	 * @param inFormat
	 *            指定日期格式
	 * @return String 星期几
	 */
	public static String getWeekNumber(String strDate, String inFormat) {
		String week = "星期日";
		Calendar calendar = new GregorianCalendar();
		DateFormat df = new SimpleDateFormat(inFormat);
		try {
			calendar.setTime(df.parse(strDate));
		} catch (Exception e) {
			return "错误";
		}
		int intTemp = calendar.get(Calendar.DAY_OF_WEEK) - 1;
		switch (intTemp) {
		case 0:
			week = "周日";
			break;
		case 1:
			week = "周一";
			break;
		case 2:
			week = "周二";
			break;
		case 3:
			week = "周三";
			break;
		case 4:
			week = "周四";
			break;
		case 5:
			week = "周五";
			break;
		case 6:
			week = "周六";
			break;
		}
		return week;
	}

	
	/**
	 * 获取星期
	 * @param strDate
	 * @param inFormat
	 * @return
	 */
	public static int getWeek(String strDate, String inFormat) {
		String week = "星期日";
		Calendar calendar = new GregorianCalendar();
		DateFormat df = new SimpleDateFormat(inFormat);
		try {
			calendar.setTime(df.parse(strDate));
		} catch (Exception e) {
			return -1;
		}
		int intTemp = calendar.get(Calendar.DAY_OF_WEEK) - 1;
		return intTemp;
	}
	
	/**
	 * 根据给定的日期判断是否为上下午.
	 * 
	 * @param strDate
	 *            the str date
	 * @param format
	 *            the format
	 * @return the time quantum
	 */
	public static String getTimeQuantum(String strDate, String format) {
		Date mDate = getDateByFormat(strDate, format);
		int hour = mDate.getHours();
		if (hour >= 12)
			return "PM";
		else
			return "AM";
	}

	/**
	 * 根据给定的毫秒数算得时间的描述.
	 * 
	 * @param milliseconds
	 *            the milliseconds
	 * @return the time description
	 */
	public static String getTimeDescription(long milliseconds) {
		if (milliseconds > 1000) {
			// 大于一分
			if (milliseconds / 1000 / 60 > 1) {
				long minute = milliseconds / 1000 / 60;
				long second = milliseconds / 1000 % 60;
				return minute + "分" + second + "秒";
			} else {
				// 显示秒
				return milliseconds / 1000 + "秒";
			}
		} else {
			return milliseconds + "毫秒";
		}
	}

	/**
	 * 将毫秒的时间转换为什么时候发送
	 * 
	 * @param senTime
	 * @return
	 */
	public static String changeTime(Long senTime, String type) {
		String showTime = "";
		Long nowTime = System.currentTimeMillis();
		Long areaTime = nowTime - senTime;
		if (areaTime / 1000 < 60) {// 1分钟内发送的，提示多少秒之前
			long showtime = areaTime / 1000;
			if (showtime <= 0) {
				showTime = "刚刚";
			} else {
				showTime = areaTime / 1000 + "秒前";
			}
		} else if (areaTime / (1000 * 60) < 60) {// 1小时内发送的提示多少分之前
			long time =  areaTime / (1000 * 60);
			showTime =  (time <=0 ? 1:time) + "分钟前";
		} else if (areaTime / (1000 * 60 * 60) <= 24) {// 24小时内发送，提示多少小时前发送喽
			long time = areaTime / (1000 * 60 * 60);
			showTime =  (time <=0 ? 1:time) + "小时前";
		} else if (areaTime / (1000 * 60 * 60 * 30) <= 31){// 一个月内
			long time = areaTime / (1000 * 60 * 60 * 30);
			showTime =  (time <=0 ? 1:time) + "天前";
		}else{
			long time = areaTime / (1000 * 60 * 60 * 30 * 12);
			showTime =  (time <=0 ? 1:time) + "个月前";
//		}else{// 其他直接提示发送日期
//			Date date = new Date(senTime);
//			SimpleDateFormat sdf = new SimpleDateFormat(type);
//			showTime = sdf.format(date);
		}
		return showTime;
	}

	public static String changeTime2(Long senTime, String type) {
		String showTime = "";
		Date date = new Date(senTime);
		SimpleDateFormat sdf = new SimpleDateFormat(type);
		showTime = sdf.format(date);
		return showTime;
	}


	/**
	 * 算和现在的的时间差
	 * 
	 * @param senTime
	 * @return
	 */
	public static long TimeArea(long senTime) {
		Long nowTime = System.currentTimeMillis();
		Long areaTime = nowTime - senTime;
		if (areaTime < 0) {
			areaTime = (long) 0;
		}

		return areaTime;
	}

	/*
     * 将时间转换为时间戳
     */
	public static long dateToStamp(String s) throws ParseException {
		String res;
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		Date date = simpleDateFormat.parse(s);
		long ts = date.getTime();
		return ts;
	}

	/**
	 * 算和现在的的时间差
	 * 
	 * @param senTime
	 * @return
	 */
	public static long TimeArea2(long senTime) {
		String date = milltionToDate(System.currentTimeMillis(), dateFormatYMD);
		Date date2 = DateUtil.getDateByFormat(date, DateUtil.dateFormatYMD);
		Long areaTime = senTime - date2.getTime();
//		if (areaTime < 0) {
//			areaTime = (long) 0;
//		}

		return areaTime;
	}

	/**
	 * 2个时间差
	 * 
	 * @return
	 */
	public static String betweenTiem(long largeTime, long smallTime, String type) {
		Long areaTime = largeTime - smallTime;
		if (areaTime < 0) {
			areaTime = (long) 0;
		}
		return milltionToDate(areaTime, type);
	}

	public static String[] betweenTime(long endTime, long startTime){
		long areaTime = endTime - startTime;
		long cHour = areaTime / (1000 * 60 * 60);
		long cMinutes = (areaTime - cHour * (1000 * 60 * 60)) / (1000* 60);
		long cSecond = (areaTime - cHour * (1000 * 60 * 60) - cMinutes * (1000 * 60)) / 1000;
//		LogUtil.debug("cHour:" + cHour + "cMinutes:" + cMinutes + "cSecond" + cSecond);
		String h = "", m = "", s = "";
		if (cHour < 10)
			h += "0";
		h += cHour;
		if (cMinutes < 10)
			m += "0";
		m += cMinutes;
		if (cSecond < 10)
			s += "0";
		s += cSecond;
		return new String[]{h,m,s};
	}

	public static Long[] betweenTime2(long endTime, long startTime){
		long areaTime = endTime - startTime;
		long cHour = areaTime / (1000 * 60 * 60);
		long cMinutes = (areaTime - cHour * (1000 * 60 * 60)) / (1000* 60);
		long cSecond = (areaTime - cHour * (1000 * 60 * 60) - cMinutes * (1000 * 60)) / 1000;
//		LogUtil.debug("cHour:" + cHour + "cMinutes:" + cMinutes + "cSecond" + cSecond);
		return new Long[]{cHour,cMinutes,cSecond};
	}

	public static String[] betweenTimeDay(long endTime, long startTime){
		long areaTime = endTime - startTime;
		long cDay = areaTime / (1000 * 60 * 60 * 24);
		long cHour = (areaTime - cDay * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
		long cMinutes = (areaTime - cDay * (1000 * 60 * 60 * 24) - cHour * (1000 * 60 * 60)) / (1000* 60);
		long cSecond = (areaTime - cDay * (1000 * 60 * 60 * 24) - cHour * (1000 * 60 * 60) - cMinutes * (1000 * 60)) / 1000;
//		LogUtil.debug("cHour:" + cHour + "cMinutes:" + cMinutes + "cSecond" + cSecond);
		String d = "", h = "", m = "", s = "";
		d += cDay;
		if (cHour < 10)
			h += "0";
		h += cHour;
		if (cMinutes < 10)
			m += "0";
		m += cMinutes;
		if (cSecond < 10)
			s += "0";
		s += cSecond;
		return new String[]{d,h,m,s};
	}

	/**
	 * 讲long时间转换特地格式
	 * 
	 * @param senTime
	 * @param type
	 * @return
	 */
	public static String milltionToDate(long senTime, String type) {
		String time = "";
		Date date = new Date(senTime);
		SimpleDateFormat sdf = new SimpleDateFormat(type);
		time = sdf.format(date);
		return time;
	}
	
	public static long strDateToMilltion(String strTime, String type){
		Date date =	getDateByFormat(strTime,type);
		return date.getTime();
	}

	/**
	 * 比较是否在今天之前
	 * 
	 * @param dateTime
	 *            比较的日期
	 * @param type
	 *            比较日期的歌声
	 * @return
	 */
	public static boolean isBeforeToday(String dateTime, String type) {
		DateFormat df = new SimpleDateFormat(type);
		try {
			Date dt1 = df.parse(dateTime);
			Date nowDt = new Date();
			if (dt1.getTime() < nowDt.getTime()) {
				return true;
			}

		} catch (ParseException e) {
//			PLog.d("时间比较出错了");
			e.printStackTrace();
			return false;
		}
		return false;
	}

	/**
	 * 根据年 月 获取对应的月份 天数
	 * */
	public static int getDaysByYearMonth(int year, int month) {

		Calendar a = Calendar.getInstance();
		a.set(Calendar.YEAR, year);
		a.set(Calendar.MONTH, month - 1);
		a.set(Calendar.DATE, 1);
		a.roll(Calendar.DATE, -1);
		int maxDate = a.get(Calendar.DATE);
		return maxDate;
	}
}
